﻿#ifndef MYSQL_H
#define MYSQL_H
#pragma execution_character_set("utf-8")
#include <QObject>
#include <QtSql>
#include <QDebug>
#include <common.h>
#include <QDateTime>
class mysql
{
public:
    mysql();
    void setInformation(QString SQL_ip, QString SQL_Sname,QString Sql_Username,QString SQL_Password,QString connect_name);                              //设置数据库信息
    bool connect();                                                                                                                                     //连接数据库
    QString create_caculate_task(QString task_type, QString task_data, QString create_id);                                                              //创建计算任务并返回任务ID
    QString rand_id(QString table_name, QString idname);                                                                                                //返回对应表对应项随机ID
    QString rand_id(int length);                                                                                                                        //直接返回随机ID
    bool create_decomposition_task(QStringList taskid, QString belong_taskid, QStringList task_data, QDateTime createtime);                             //创建分解任务
    QList<QStringList> Get_unfinshCaculateTask();                                                                                                       //从数据库中获取未完成的任务
    QList<QStringList> Get_DecompositionTask(QString CaculateId);                                                                                       //从数据库中获取分解任务
    void CaculateTask_finish(QString C_taskid, QString C_taskresult, QString endtime, QString timeconsuming);                                           //计算完成，更新数据库
    void Decomposition_taskfinish(QString taskbelongId, QString D_taskid, QString D_taskResult, QString D_taskStarttime, QString  D_taskEndtime);       //计算完成，更新数据库
    void CaculateTask_updateschedule(QString CaculateTaskid,double schedule);                                                                           //更新任务进度
    void CaculateTask_createDtaskSuccess(QString Caculate_id, int Dtask_size);
    void CleanTask();
    QList<QStringList> GetCaculate_Task(QString data);                                                                                                  //获取计算任务
    bool               DeleteCaculate_Task(QString Caculate_Taskid);                                                                                    //删除计算任务
    void KeepSqlConnect();
    QString             connect_name;             //连接编号
    QString             Sql_Username;             //数据库用户名
    QString             SQL_Password;             //数据库密码
    QString             SQL_ip;                   //数据库ip
    QString             SQL_Sname;                //数据库名称
    QSqlDatabase        db;                       //ODBC
    QSqlQuery           query;
    QDateTime           LastConnectTime;
};

#endif // MYSQL_H
